TOP
LibreOffice Calc में तालिकाओं (Unpivot) का पुनर्गठन
विवरण
कभी-कभी क्रॉस (पिवट) टेबल को फ्लैट में बदलने की आवश्यकता होती है। इस प्रक्रिया को "कहा जाता है डेटा सीधा करना " (unpivot data) . ऐसे के परिणामस्वरूप " सीधा "हमें एक तालिका मिलती है जहां सभी समान डेटा एक कॉलम में होते हैं।
प्रोग्राम LibreOffice Calc में पिवट तालिकाओं को "में परिवर्तित करने के लिए कोई मानक कार्यक्षमता नहीं है समतल ", लेकिन आप संबंधित प्रक्रिया स्वयं लिख सकते हैं। आइए देखें कि यह कैसे करना है।
आइए समस्या के सार को अधिक स्पष्ट रूप से समझने के लिए नीचे दी गई तस्वीर देखें। बाईं ओर हमारे पास मैट्रिक्स (पिवट टेबल) के रूप में एक तालिका है, और दाईं ओर - कॉलम (फ्लैट टेबल) के साथ एक नियमित तालिका:
जब आप किसी तालिका का विस्तार करते हैं, तो आप विशेषता-मूल्य जोड़ी को अनपैक करते हैं जो मैट्रिक्स तालिका में स्तंभों का प्रतिच्छेदन होता है और उन्हें समतल तालिका में चपटे स्तंभों में पुन: उन्मुख करते हैं:
कीमत (Values) (बाईं ओर नीला) एक नए कॉलम में विस्तारित करें (दाईं ओर नीला);
गुण (Attributes) (बाईं ओर हरा) को भी एक नए कॉलम में विस्तारित किया जाता है (दाईं ओर हरा) और मानों के नए कॉलम के अनुसार डुप्लिकेट किया जाता है।
UnPivotTable प्रक्रिया के लिए StarBASIC कोड
मेनू खोलें Tools - Macros - Edit Macros..., Module1 चुनें और निम्नलिखित पाठ को मॉड्यूल में कॉपी करें:
- Sub UnPivotTable
-
- Dim oBook As Object
- Dim oActiveSheet As Object
- Dim oSelRange As Object
- Dim oNewSheet As Object
-
- Dim i As Long
- Dim iTopLabelRowCount As Integer
- Dim iSideLabelColCount As Integer
-
- oBook = ThisComponent
- oActiveSheet = oBook.CurrentController.ActiveSheet
- oSelRange = oBook.CurrentSelection
-
-
- oBook.Sheets.insertNewByName("UnPivoted Table",0)
- oNewSheet = oBook.Sheets(0)
-
-
- iTopLabelRowCount = InputBox(" शीर्ष शीर्षलेख में कितनी पंक्तियाँ हैं? ")
- iSideLabelColCount = InputBox(" साइड हेडर में कितने कॉलम हैं? ")
-
- i = 0
-
- For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count
- For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count
-
- For j = 1 To iSideLabelColCount
- oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula
- Next j
-
- For k = 1 To iTopLabelRowCount
- oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula
- Next k
-
- oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula
- i = i + 1
-
- Next c
- Next r
- End Sub
Sub UnPivotTable
' moonexcel.com.ua
Dim oBook As Object
Dim oActiveSheet As Object
Dim oSelRange As Object
Dim oNewSheet As Object
Dim i As Long
Dim iTopLabelRowCount As Integer
Dim iSideLabelColCount As Integer
oBook = ThisComponent
oActiveSheet = oBook.CurrentController.ActiveSheet
oSelRange = oBook.CurrentSelection
' एक नई शीट जोड़ें
oBook.Sheets.insertNewByName("UnPivoted Table",0)
oNewSheet = oBook.Sheets(0)
' हेडर का आकार निर्धारित करें
iTopLabelRowCount = InputBox(" शीर्ष शीर्षलेख में कितनी पंक्तियाँ हैं? ")
iSideLabelColCount = InputBox(" साइड हेडर में कितने कॉलम हैं? ")
i = 0
For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count
For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count
For j = 1 To iSideLabelColCount
oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula
Next j
For k = 1 To iTopLabelRowCount
oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula
Next k
oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula
i = i + 1
Next c
Next r
End Sub
फिर, Macro Editor को बंद करें और LibreOffice Calc में अपनी वर्कशीट पर वापस लौटें। शीर्ष और बाएँ शीर्षलेखों के साथ संपूर्ण तालिका का चयन करें और मेनू Tools - Macros - Run Macro... के माध्यम से हमारा नया मैक्रो चलाएँ।
मैक्रो आपकी कार्यपुस्तिका में एक नई नामित शीट सम्मिलित करेगा "UnPivoted Table" , और फिर नए प्रारूप में एक तालिका जोड़ें। ऐसी तालिका से आप LibreOffice Calc में कोई भी विश्लेषण कर सकते हैं।
एक्सटेंशन का उपयोग करना
आप उपयोगिता का भी उपयोग कर सकते हैं "पिवट टेबल (Unpivot)" एक्सटेंशन इंस्टॉल करके YLC_Utilities.oxt .
उसके बाद, यह उपयोगिता उन सभी फ़ाइलों में उपलब्ध होगी जो LibreOffice Calc में खोली जाएंगी।
विषय पर लेख:
Excel में तालिकाओं (Unpivot) का पुनर्गठन